#include "WeaponData.h"

//since the array of stamina drain values in memory uses Behavior Variation Ids instead of weapon ids
static unsigned short WeaponTypeToBehaviorVariation(unsigned int weaponType){
    switch (weaponType){
        case 100: return 2000;
        case 101: return 2000;
        case 102: return 2003;
        case 103: return 2001;
        case 104: return 2002;
        case 200: return 2300;
        case 201: return 2300;
        case 202: return 2301;
        case 203: return 2300;
        case 204: return 2302;
        case 205: return 2300;
        case 206: return 2300;
        case 207: return 2301;
        case 208: return 2303;
        case 209: return 2300;
        case 210: return 2304;
        case 211: return 2305;
        case 212: return 2301;
        case 300: return 2500;
        case 301: return 2505;
        case 302: return 2500;
        case 303: return 2502;
        case 304: return 2500;
        case 306: return 2503;
        case 307: return 2506;
        case 309: return 2504;
        case 310: return 2501;
        case 311: return 2506;
        case 312: return 2506;
        case 314: return 2507;
        case 315: return 2507;
        case 350: return 2600;
        case 351: return 2602;
        case 352: return 2603;
        case 354: return 2601;
        case 355: return 2604;
        case 400: return 2800;
        case 401: return 2800;
        case 402: return 2801;
        case 403: return 2802;
        case 405: return 2803;
        case 406: return 2804;
        case 450: return 5100;
        case 451: return 5100;
        case 453: return 5101;
        case 500: return 2900;
        case 501: return 2900;
        case 502: return 2901;
        case 503: return 2902;
        case 600: return 2701;
        case 601: return 2700;
        case 602: return 2702;
        case 603: return 2703;
        case 604: return 2704;
        case 700: return 3001;
        case 701: return 3000;
        case 702: return 3000;
        case 703: return 3003;
        case 704: return 3002;
        case 705: return 3004;
        case 750: return 3200;
        case 751: return 3202;
        case 752: return 3201;
        case 753: return 3203;
        case 800: return 3302;
        case 801: return 3300;
        case 802: return 3300;
        case 803: return 3301;
        case 804: return 3303;
        case 809: return 3302;
        case 810: return 3300;
        case 811: return 3302;
        case 812: return 3300;
        case 850: return 3501;
        case 851: return 3500;
        case 852: return 3500;
        case 854: return 3500;
        case 855: return 3502;
        case 856: return 3503;
        case 857: return 3503;
        case 900: return 4201;
        case 901: return 4200;
        case 902: return 4202;
        case 903: return 4204;
        case 904: return 4203;
        case 1000: return 3600;
        case 1001: return 3600;
        case 1002: return 3604;
        case 1003: return 3605;
        case 1004: return 3602;
        case 1006: return 3606;
        case 1050: return 3601;
        case 1051: return 3603;
        case 1052: return 3600;
        case 1100: return 3800;
        case 1101: return 3803;
        case 1102: return 3804;
        case 1103: return 3800;
        case 1105: return 3805;
        case 1106: return 3802;
        case 1107: return 3801;
        case 1150: return 5000;
        case 1151: return 5000;
        case 1200: return 4400;
        case 1201: return 4400;
        case 1202: return 4400;
        case 1203: return 4400;
        case 1204: return 4400;
        case 1205: return 4400;
        case 1250: return 4600;
        case 1251: return 4600;
        case 1252: return 4600;
        case 1253: return 4600;
        case 1400: return 4800;
        case 1401: return 4800;
        case 1402: return 4800;
        case 1403: return 4801;
        case 1404: return 4801;
        case 1405: return 4801;
        case 1406: return 4801;
        case 1408: return 4801;
        case 1409: return 4801;
        case 1410: return 4801;
        case 1411: return 4802;
        case 1412: return 4802;
        case 1413: return 4802;
        case 1414: return 4802;
        case 1450: return 4800;
        case 1451: return 4800;
        case 1452: return 4800;
        case 1453: return 4800;
        case 1454: return 4800;
        case 1455: return 4800;
        case 1456: return 4800;
        case 1457: return 4800;
        case 1460: return 4801;
        case 1461: return 4800;
        case 1462: return 4800;
        case 1470: return 4803;
        case 1471: return 4800;
        case 1472: return 4800;
        case 1473: return 4800;
        case 1474: return 4800;
        case 1475: return 4803;
        case 1476: return 4801;
        case 1477: return 4800;
        case 1478: return 4800;
        case 1500: return 4701;
        case 1501: return 4700;
        case 1502: return 4700;
        case 1503: return 4700;
        case 1505: return 4700;
        case 1506: return 4702;
        case 1507: return 4700;
        case 1508: return 4700;
        case 1509: return 4700;
        case 1510: return 4700;
        case 1600: return 4300;
        case 1601: return 4300;
        case 9000: return 4801;
        case 9001: return 4800;
        case 9002: return 4800;
        case 9003: return 4700;
        default: return 0;
    }
}

static int BehaviorAndAttackTypeToStaminaDrain(unsigned int Behavior_AnimationType_hash);

int StaminaDrainForAttack(unsigned int weapon_id, unsigned short animationType_id){
    //only interested in weapon type, above 100's place
    unsigned int weaponType = weapon_id / 1000;
    //first match weapon id to behavior variation id
    unsigned short BehaviorVariationId = WeaponTypeToBehaviorVariation(weaponType);
    //concatinate behavior and animation type to allow hash table lookup
    unsigned int Behavior_AnimationType_hash = (BehaviorVariationId * 1000) + animationType_id;
    //then match behavior veriation id and animation type to stamina drain
    return BehaviorAndAttackTypeToStaminaDrain(Behavior_AnimationType_hash);
}

//i must go fast, and ReadProcessMemory is too slow
static int BehaviorAndAttackTypeToStaminaDrain(unsigned int Behavior_AnimationType_hash){
    switch (Behavior_AnimationType_hash){
        case 2000046: return 14;
        case 2000048: return 14;
        case 2000049: return 14;
        case 2000053: return 40;
        case 2000089: return 30;
        case 2000090: return 30;
        case 2000107: return 24;
        case 2000109: return 24;
        case 2000110: return 24;
        case 2000113: return 50;
        case 2000115: return 40;
        case 2000116: return 40;
        case 2000052: return 10;
        case 2000112: return 10;
        case 2000225: return 20;
        case 2000059: return 20;
        case 2000060: return 32;
        case 2000041: return 14;
        case 2000103: return 24;
        case 2001046: return 14;
        case 2001048: return 14;
        case 2001049: return 14;
        case 2001053: return 40;
        case 2001089: return 30;
        case 2001090: return 30;
        case 2001107: return 24;
        case 2001109: return 24;
        case 2001110: return 24;
        case 2001113: return 50;
        case 2001115: return 40;
        case 2001116: return 40;
        case 2001052: return 10;
        case 2001112: return 10;
        case 2001225: return 20;
        case 2001059: return 20;
        case 2001060: return 32;
        case 2001041: return 14;
        case 2001103: return 24;
        case 2002046: return 14;
        case 2002048: return 14;
        case 2002049: return 14;
        case 2002053: return 40;
        case 2002089: return 15;
        case 2002090: return 30;
        case 2002107: return 24;
        case 2002109: return 24;
        case 2002110: return 24;
        case 2002113: return 50;
        case 2002115: return 40;
        case 2002116: return 20;
        case 2002052: return 10;
        case 2002112: return 10;
        case 2002225: return 20;
        case 2002059: return 20;
        case 2002060: return 32;
        case 2002041: return 14;
        case 2002103: return 24;
        case 2003046: return 14;
        case 2003048: return 14;
        case 2003049: return 14;
        case 2003053: return 40;
        case 2003089: return 15;
        case 2003090: return 10;
        case 2003107: return 24;
        case 2003109: return 24;
        case 2003110: return 24;
        case 2003113: return 50;
        case 2003115: return 20;
        case 2003116: return 12;
        case 2003052: return 10;
        case 2003112: return 10;
        case 2003225: return 20;
        case 2003059: return 20;
        case 2003060: return 32;
        case 2003041: return 14;
        case 2003103: return 24;
        case 2004046: return 14;
        case 2004048: return 14;
        case 2004049: return 14;
        case 2004053: return 40;
        case 2004089: return 45;
        case 2004090: return 45;
        case 2004107: return 24;
        case 2004109: return 24;
        case 2004110: return 24;
        case 2004113: return 50;
        case 2004115: return 65;
        case 2004116: return 65;
        case 2004052: return 10;
        case 2004112: return 10;
        case 2004225: return 20;
        case 2004059: return 20;
        case 2004060: return 32;
        case 2004041: return 14;
        case 2004103: return 24;
        case 2300046: return 20;
        case 2300048: return 20;
        case 2300049: return 20;
        case 2300053: return 52;
        case 2300089: return 45;
        case 2300090: return 35;
        case 2300107: return 30;
        case 2300109: return 30;
        case 2300110: return 30;
        case 2300113: return 60;
        case 2300115: return 40;
        case 2300116: return 40;
        case 2300052: return 10;
        case 2300112: return 10;
        case 2300225: return 20;
        case 2300059: return 25;
        case 2300060: return 35;
        case 2300041: return 20;
        case 2300103: return 35;
        case 2301046: return 20;
        case 2301048: return 20;
        case 2301049: return 20;
        case 2301053: return 52;
        case 2301089: return 32;
        case 2301090: return 32;
        case 2301107: return 30;
        case 2301109: return 30;
        case 2301110: return 30;
        case 2301113: return 60;
        case 2301115: return 40;
        case 2301116: return 40;
        case 2301052: return 10;
        case 2301112: return 10;
        case 2301225: return 20;
        case 2301059: return 20;
        case 2301060: return 30;
        case 2301041: return 20;
        case 2301103: return 35;
        case 2302046: return 20;
        case 2302048: return 20;
        case 2302049: return 20;
        case 2302053: return 52;
        case 2302089: return 48;
        case 2302090: return 48;
        case 2302107: return 30;
        case 2302109: return 30;
        case 2302110: return 30;
        case 2302113: return 60;
        case 2302115: return 55;
        case 2302116: return 55;
        case 2302052: return 10;
        case 2302112: return 10;
        case 2302225: return 20;
        case 2302059: return 25;
        case 2302060: return 35;
        case 2302041: return 20;
        case 2302103: return 40;
        case 2303046: return 20;
        case 2303048: return 20;
        case 2303049: return 20;
        case 2303053: return 52;
        case 2303089: return 40;
        case 2303090: return 40;
        case 2303107: return 30;
        case 2303109: return 30;
        case 2303110: return 30;
        case 2303113: return 60;
        case 2303115: return 55;
        case 2303116: return 55;
        case 2303052: return 10;
        case 2303112: return 10;
        case 2303225: return 20;
        case 2303059: return 25;
        case 2303060: return 35;
        case 2303041: return 20;
        case 2303103: return 35;
        case 2304046: return 20;
        case 2304048: return 20;
        case 2304049: return 20;
        case 2304053: return 52;
        case 2304089: return 35;
        case 2304090: return 40;
        case 2304107: return 30;
        case 2304109: return 30;
        case 2304110: return 30;
        case 2304113: return 60;
        case 2304115: return 50;
        case 2304116: return 55;
        case 2304052: return 10;
        case 2304112: return 10;
        case 2304225: return 20;
        case 2304059: return 25;
        case 2304060: return 35;
        case 2304041: return 20;
        case 2304103: return 35;
        case 2305046: return 20;
        case 2305048: return 20;
        case 2305049: return 20;
        case 2305053: return 52;
        case 2305089: return 32;
        case 2305090: return 32;
        case 2305107: return 30;
        case 2305109: return 30;
        case 2305110: return 30;
        case 2305113: return 60;
        case 2305115: return 60;
        case 2305116: return 60;
        case 2305320: return 60;
        case 2305330: return 60;
        case 2305052: return 10;
        case 2305112: return 10;
        case 2305225: return 20;
        case 2305059: return 20;
        case 2305060: return 30;
        case 2305041: return 20;
        case 2305103: return 35;
        case 2305800: return 0;
        case 2500046: return 30;
        case 2500048: return 30;
        case 2500049: return 30;
        case 2500053: return 70;
        case 2500089: return 60;
        case 2500090: return 60;
        case 2500107: return 40;
        case 2500109: return 40;
        case 2500110: return 40;
        case 2500113: return 85;
        case 2500115: return 72;
        case 2500116: return 72;
        case 2500052: return 10;
        case 2500112: return 10;
        case 2500225: return 20;
        case 2500059: return 40;
        case 2500060: return 50;
        case 2500041: return 30;
        case 2500103: return 40;
        case 2501046: return 30;
        case 2501048: return 30;
        case 2501049: return 30;
        case 2501053: return 70;
        case 2501089: return 70;
        case 2501090: return 70;
        case 2501107: return 40;
        case 2501109: return 40;
        case 2501110: return 40;
        case 2501113: return 85;
        case 2501115: return 90;
        case 2501116: return 90;
        case 2501052: return 10;
        case 2501112: return 10;
        case 2501225: return 20;
        case 2501059: return 40;
        case 2501060: return 50;
        case 2501041: return 30;
        case 2501103: return 40;
        case 2502046: return 30;
        case 2502048: return 30;
        case 2502049: return 30;
        case 2502053: return 70;
        case 2502089: return 60;
        case 2502090: return 60;
        case 2502107: return 40;
        case 2502109: return 40;
        case 2502110: return 40;
        case 2502113: return 85;
        case 2502115: return 75;
        case 2502116: return 75;
        case 2502052: return 10;
        case 2502112: return 10;
        case 2502225: return 20;
        case 2502059: return 40;
        case 2502060: return 50;
        case 2502041: return 30;
        case 2502103: return 40;
        case 2503046: return 30;
        case 2503048: return 30;
        case 2503049: return 30;
        case 2503053: return 70;
        case 2503089: return 65;
        case 2503090: return 65;
        case 2503107: return 40;
        case 2503109: return 40;
        case 2503110: return 40;
        case 2503113: return 85;
        case 2503115: return 72;
        case 2503116: return 72;
        case 2503052: return 10;
        case 2503112: return 10;
        case 2503225: return 20;
        case 2503059: return 40;
        case 2503060: return 50;
        case 2503041: return 30;
        case 2503103: return 40;
        case 2503800: return 0;
        case 2504046: return 30;
        case 2504048: return 30;
        case 2504049: return 30;
        case 2504053: return 70;
        case 2504089: return 65;
        case 2504090: return 65;
        case 2504120: return 60;
        case 2504130: return 60;
        case 2504107: return 40;
        case 2504109: return 40;
        case 2504110: return 40;
        case 2504113: return 85;
        case 2504115: return 90;
        case 2504116: return 90;
        case 2504320: return 90;
        case 2504330: return 90;
        case 2504052: return 10;
        case 2504112: return 10;
        case 2504225: return 20;
        case 2504059: return 40;
        case 2504060: return 50;
        case 2504041: return 30;
        case 2504103: return 40;
        case 2504800: return 0;
        case 2504801: return 0;
        case 2505046: return 30;
        case 2505048: return 30;
        case 2505049: return 30;
        case 2505053: return 70;
        case 2505089: return 70;
        case 2505090: return 50;
        case 2505107: return 40;
        case 2505109: return 40;
        case 2505110: return 40;
        case 2505113: return 85;
        case 2505115: return 72;
        case 2505116: return 72;
        case 2505052: return 10;
        case 2505112: return 10;
        case 2505225: return 20;
        case 2505059: return 40;
        case 2505060: return 50;
        case 2505041: return 30;
        case 2505103: return 50;
        case 2506046: return 30;
        case 2506048: return 30;
        case 2506049: return 30;
        case 2506053: return 70;
        case 2506089: return 80;
        case 2506090: return 80;
        case 2506107: return 40;
        case 2506109: return 40;
        case 2506110: return 40;
        case 2506113: return 85;
        case 2506115: return 100;
        case 2506116: return 100;
        case 2506052: return 10;
        case 2506112: return 10;
        case 2506225: return 20;
        case 2506059: return 40;
        case 2506060: return 50;
        case 2506041: return 30;
        case 2506103: return 40;
        case 2507046: return 30;
        case 2507048: return 30;
        case 2507049: return 30;
        case 2507053: return 70;
        case 2507089: return 80;
        case 2507090: return 80;
        case 2507107: return 40;
        case 2507109: return 40;
        case 2507110: return 40;
        case 2507113: return 85;
        case 2507115: return 100;
        case 2507116: return 100;
        case 2507052: return 10;
        case 2507112: return 10;
        case 2507225: return 20;
        case 2507059: return 40;
        case 2507060: return 50;
        case 2507041: return 30;
        case 2507103: return 40;
        case 2508046: return 30;
        case 2508048: return 30;
        case 2508049: return 30;
        case 2508053: return 70;
        case 2508089: return 70;
        case 2508090: return 70;
        case 2508107: return 40;
        case 2508109: return 40;
        case 2508110: return 40;
        case 2508113: return 85;
        case 2508115: return 110;
        case 2508116: return 110;
        case 2508052: return 10;
        case 2508112: return 10;
        case 2508225: return 20;
        case 2508059: return 40;
        case 2508060: return 50;
        case 2508041: return 30;
        case 2508103: return 40;
        case 2509046: return 30;
        case 2509048: return 30;
        case 2509049: return 30;
        case 2509053: return 70;
        case 2509089: return 60;
        case 2509090: return 60;
        case 2509107: return 40;
        case 2509109: return 40;
        case 2509110: return 40;
        case 2509113: return 85;
        case 2509115: return 110;
        case 2509320: return 110;
        case 2509052: return 10;
        case 2509112: return 10;
        case 2509225: return 20;
        case 2509059: return 40;
        case 2509060: return 50;
        case 2509041: return 30;
        case 2509103: return 40;
        case 2509800: return 0;
        case 2600046: return 45;
        case 2600001: return 0;
        case 2600048: return 45;
        case 2600049: return 45;
        case 2600053: return 90;
        case 2600089: return 70;
        case 2600090: return 80;
        case 2600107: return 60;
        case 2600109: return 60;
        case 2600110: return 60;
        case 2600113: return 105;
        case 2600115: return 100;
        case 2600116: return 100;
        case 2600052: return 10;
        case 2600112: return 10;
        case 2600225: return 5;
        case 2600501: return 15;
        case 2600506: return 15;
        case 2600511: return 15;
        case 2600517: return 10;
        case 2600059: return 50;
        case 2600060: return 65;
        case 2600041: return 45;
        case 2600103: return 60;
        case 2601046: return 45;
        case 2601001: return 0;
        case 2601048: return 45;
        case 2601049: return 45;
        case 2601053: return 90;
        case 2601089: return 70;
        case 2601090: return 80;
        case 2601107: return 60;
        case 2601109: return 60;
        case 2601110: return 60;
        case 2601113: return 105;
        case 2601115: return 100;
        case 2601116: return 100;
        case 2601320: return 100;
        case 2601330: return 100;
        case 2601052: return 10;
        case 2601112: return 10;
        case 2601225: return 5;
        case 2601501: return 15;
        case 2601506: return 15;
        case 2601511: return 15;
        case 2601517: return 10;
        case 2601059: return 50;
        case 2601060: return 65;
        case 2601041: return 45;
        case 2601103: return 60;
        case 2601800: return 0;
        case 2602046: return 45;
        case 2602001: return 0;
        case 2602048: return 45;
        case 2602049: return 45;
        case 2602053: return 90;
        case 2602089: return 80;
        case 2602090: return 80;
        case 2602107: return 60;
        case 2602109: return 60;
        case 2602110: return 60;
        case 2602113: return 105;
        case 2602115: return 100;
        case 2602116: return 100;
        case 2602052: return 10;
        case 2602112: return 10;
        case 2602225: return 5;
        case 2602501: return 15;
        case 2602506: return 15;
        case 2602511: return 15;
        case 2602517: return 10;
        case 2602059: return 50;
        case 2602060: return 65;
        case 2602041: return 45;
        case 2602103: return 60;
        case 2603046: return 45;
        case 2603001: return 0;
        case 2603048: return 45;
        case 2603049: return 45;
        case 2603053: return 90;
        case 2603089: return 80;
        case 2603090: return 80;
        case 2603107: return 60;
        case 2603109: return 60;
        case 2603110: return 60;
        case 2603113: return 105;
        case 2603115: return 100;
        case 2603116: return 100;
        case 2603052: return 10;
        case 2603112: return 10;
        case 2603225: return 5;
        case 2603501: return 15;
        case 2603506: return 15;
        case 2603511: return 15;
        case 2603517: return 10;
        case 2603059: return 50;
        case 2603060: return 65;
        case 2603041: return 45;
        case 2603103: return 60;
        case 2604046: return 45;
        case 2604001: return 0;
        case 2604048: return 45;
        case 2604049: return 45;
        case 2604053: return 90;
        case 2604089: return 80;
        case 2604090: return 80;
        case 2604107: return 60;
        case 2604109: return 60;
        case 2604110: return 60;
        case 2604113: return 105;
        case 2604115: return 100;
        case 2604116: return 100;
        case 2604052: return 10;
        case 2604112: return 10;
        case 2604225: return 5;
        case 2604501: return 15;
        case 2604506: return 15;
        case 2604511: return 15;
        case 2604517: return 10;
        case 2604059: return 50;
        case 2604060: return 65;
        case 2604041: return 45;
        case 2604103: return 60;
        case 2800046: return 20;
        case 2800048: return 20;
        case 2800049: return 20;
        case 2800053: return 52;
        case 2800089: return 20;
        case 2800090: return 44;
        case 2800107: return 30;
        case 2800109: return 30;
        case 2800110: return 30;
        case 2800113: return 60;
        case 2800115: return 30;
        case 2800116: return 65;
        case 2800052: return 20;
        case 2800112: return 30;
        case 2800225: return 20;
        case 2800059: return 25;
        case 2800060: return 35;
        case 2800041: return 20;
        case 2800103: return 30;
        case 2801046: return 20;
        case 2801048: return 20;
        case 2801049: return 20;
        case 2801053: return 52;
        case 2801089: return 45;
        case 2801090: return 45;
        case 2801107: return 30;
        case 2801109: return 30;
        case 2801110: return 30;
        case 2801113: return 60;
        case 2801115: return 66;
        case 2801116: return 66;
        case 2801052: return 20;
        case 2801112: return 30;
        case 2801225: return 20;
        case 2801059: return 25;
        case 2801060: return 35;
        case 2801041: return 20;
        case 2801103: return 30;
        case 2802046: return 20;
        case 2802048: return 20;
        case 2802049: return 20;
        case 2802053: return 52;
        case 2802089: return 20;
        case 2802090: return 10;
        case 2802107: return 30;
        case 2802109: return 30;
        case 2802110: return 30;
        case 2802113: return 60;
        case 2802115: return 30;
        case 2802116: return 15;
        case 2802052: return 20;
        case 2802112: return 30;
        case 2802225: return 20;
        case 2802059: return 25;
        case 2802060: return 35;
        case 2802041: return 20;
        case 2802103: return 30;
        case 2803046: return 20;
        case 2803048: return 20;
        case 2803049: return 20;
        case 2803053: return 52;
        case 2803089: return 20;
        case 2803090: return 18;
        case 2803107: return 30;
        case 2803109: return 30;
        case 2803110: return 30;
        case 2803113: return 60;
        case 2803115: return 30;
        case 2803116: return 25;
        case 2803052: return 20;
        case 2803112: return 30;
        case 2803225: return 20;
        case 2803059: return 25;
        case 2803060: return 35;
        case 2803041: return 20;
        case 2803103: return 30;
        case 2804046: return 20;
        case 2804048: return 20;
        case 2804049: return 20;
        case 2804053: return 52;
        case 2804089: return 50;
        case 2804090: return 50;
        case 2804107: return 30;
        case 2804109: return 30;
        case 2804110: return 30;
        case 2804113: return 60;
        case 2804115: return 70;
        case 2804116: return 70;
        case 2804052: return 20;
        case 2804112: return 30;
        case 2804225: return 20;
        case 2804059: return 25;
        case 2804060: return 35;
        case 2804041: return 20;
        case 2804103: return 30;
        case 2805046: return 20;
        case 2805048: return 20;
        case 2805049: return 20;
        case 2805053: return 52;
        case 2805089: return 20;
        case 2805090: return 18;
        case 2805107: return 30;
        case 2805109: return 30;
        case 2805110: return 30;
        case 2805113: return 60;
        case 2805115: return 22;
        case 2805116: return 22;
        case 2805311: return 25;
        case 2805401: return 18;
        case 2805052: return 20;
        case 2805112: return 30;
        case 2805225: return 20;
        case 2805059: return 25;
        case 2805060: return 35;
        case 2805041: return 20;
        case 2805103: return 30;
        case 5100046: return 30;
        case 5100048: return 30;
        case 5100049: return 30;
        case 5100053: return 70;
        case 5100089: return 50;
        case 5100090: return 50;
        case 5100107: return 40;
        case 5100109: return 40;
        case 5100110: return 40;
        case 5100113: return 85;
        case 5100115: return 70;
        case 5100116: return 70;
        case 5100052: return 10;
        case 5100112: return 10;
        case 5100225: return 5;
        case 5100501: return 15;
        case 5100506: return 15;
        case 5100511: return 15;
        case 5100517: return 10;
        case 5100059: return 50;
        case 5100060: return 60;
        case 5100041: return 30;
        case 5100103: return 40;
        case 5101046: return 30;
        case 5101048: return 30;
        case 5101049: return 30;
        case 5101053: return 70;
        case 5101089: return 65;
        case 5101090: return 65;
        case 5101107: return 40;
        case 5101109: return 40;
        case 5101110: return 40;
        case 5101113: return 85;
        case 5101115: return 70;
        case 5101116: return 70;
        case 5101052: return 10;
        case 5101112: return 10;
        case 5101225: return 5;
        case 5101501: return 15;
        case 5101506: return 15;
        case 5101511: return 15;
        case 5101517: return 10;
        case 5101059: return 50;
        case 5101060: return 60;
        case 5101041: return 30;
        case 5101103: return 40;
        case 2900046: return 24;
        case 2900048: return 24;
        case 2900049: return 24;
        case 2900053: return 62;
        case 2900089: return 54;
        case 2900090: return 54;
        case 2900107: return 34;
        case 2900109: return 34;
        case 2900110: return 34;
        case 2900113: return 72;
        case 2900115: return 60;
        case 2900116: return 60;
        case 2900052: return 10;
        case 2900112: return 10;
        case 2900225: return 20;
        case 2900059: return 32;
        case 2900060: return 40;
        case 2900041: return 24;
        case 2900103: return 34;
        case 2901046: return 24;
        case 2901048: return 24;
        case 2901049: return 24;
        case 2901053: return 62;
        case 2901089: return 62;
        case 2901090: return 62;
        case 2901107: return 34;
        case 2901109: return 34;
        case 2901110: return 34;
        case 2901113: return 72;
        case 2901115: return 72;
        case 2901116: return 72;
        case 2901052: return 10;
        case 2901112: return 10;
        case 2901225: return 20;
        case 2901059: return 32;
        case 2901060: return 40;
        case 2901041: return 24;
        case 2901103: return 34;
        case 2902046: return 24;
        case 2902048: return 24;
        case 2902049: return 24;
        case 2902053: return 62;
        case 2902089: return 62;
        case 2902090: return 62;
        case 2902107: return 34;
        case 2902109: return 34;
        case 2902110: return 34;
        case 2902113: return 72;
        case 2902115: return 120;
        case 2902116: return 120;
        case 2902052: return 10;
        case 2902112: return 10;
        case 2902225: return 20;
        case 2902059: return 32;
        case 2902060: return 40;
        case 2902041: return 24;
        case 2902103: return 34;
        case 2700046: return 20;
        case 2700048: return 20;
        case 2700049: return 20;
        case 2700053: return 52;
        case 2700089: return 45;
        case 2700090: return 45;
        case 2700107: return 28;
        case 2700109: return 28;
        case 2700110: return 28;
        case 2700113: return 60;
        case 2700115: return 60;
        case 2700116: return 60;
        case 2700052: return 20;
        case 2700112: return 28;
        case 2700460: return 32;
        case 2700225: return 20;
        case 2700059: return 25;
        case 2700060: return 35;
        case 2700041: return 20;
        case 2700103: return 28;
        case 2701046: return 20;
        case 2701048: return 20;
        case 2701049: return 20;
        case 2701053: return 52;
        case 2701089: return 50;
        case 2701090: return 50;
        case 2701107: return 28;
        case 2701109: return 28;
        case 2701110: return 28;
        case 2701113: return 60;
        case 2701115: return 65;
        case 2701116: return 65;
        case 2701052: return 20;
        case 2701112: return 28;
        case 2701460: return 32;
        case 2701225: return 20;
        case 2701059: return 25;
        case 2701060: return 35;
        case 2701041: return 20;
        case 2701103: return 28;
        case 2702046: return 20;
        case 2702048: return 20;
        case 2702049: return 20;
        case 2702053: return 52;
        case 2702089: return 45;
        case 2702090: return 45;
        case 2702107: return 28;
        case 2702109: return 28;
        case 2702110: return 28;
        case 2702113: return 60;
        case 2702115: return 60;
        case 2702116: return 60;
        case 2702052: return 20;
        case 2702112: return 28;
        case 2702460: return 32;
        case 2702225: return 20;
        case 2702059: return 25;
        case 2702060: return 35;
        case 2702041: return 20;
        case 2702103: return 28;
        case 2703046: return 20;
        case 2703048: return 20;
        case 2703049: return 20;
        case 2703053: return 52;
        case 2703089: return 20;
        case 2703090: return 12;
        case 2703107: return 28;
        case 2703109: return 28;
        case 2703110: return 28;
        case 2703113: return 60;
        case 2703115: return 30;
        case 2703116: return 16;
        case 2703052: return 20;
        case 2703112: return 28;
        case 2703460: return 32;
        case 2703225: return 20;
        case 2703059: return 25;
        case 2703060: return 35;
        case 2703041: return 20;
        case 2703103: return 28;
        case 2704046: return 20;
        case 2704048: return 20;
        case 2704049: return 20;
        case 2704053: return 52;
        case 2704089: return 20;
        case 2704090: return 12;
        case 2704107: return 28;
        case 2704109: return 28;
        case 2704110: return 28;
        case 2704113: return 60;
        case 2704115: return 30;
        case 2704116: return 16;
        case 2704052: return 20;
        case 2704112: return 28;
        case 2704460: return 32;
        case 2704225: return 20;
        case 2704059: return 25;
        case 2704060: return 35;
        case 2704041: return 20;
        case 2704103: return 28;
        case 3000046: return 25;
        case 3000048: return 25;
        case 3000049: return 25;
        case 3000053: return 65;
        case 3000089: return 50;
        case 3000090: return 50;
        case 3000107: return 38;
        case 3000109: return 38;
        case 3000110: return 38;
        case 3000113: return 75;
        case 3000115: return 68;
        case 3000116: return 68;
        case 3000052: return 10;
        case 3000112: return 10;
        case 3000225: return 5;
        case 3000501: return 15;
        case 3000506: return 15;
        case 3000511: return 15;
        case 3000517: return 10;
        case 3000059: return 30;
        case 3000060: return 42;
        case 3000041: return 25;
        case 3000103: return 38;
        case 3001046: return 25;
        case 3001048: return 25;
        case 3001049: return 25;
        case 3001053: return 65;
        case 3001089: return 50;
        case 3001090: return 50;
        case 3001107: return 38;
        case 3001109: return 38;
        case 3001110: return 38;
        case 3001113: return 75;
        case 3001115: return 68;
        case 3001116: return 68;
        case 3001052: return 10;
        case 3001112: return 10;
        case 3001225: return 5;
        case 3001501: return 15;
        case 3001506: return 15;
        case 3001511: return 15;
        case 3001517: return 10;
        case 3001059: return 30;
        case 3001060: return 42;
        case 3001041: return 25;
        case 3001103: return 38;
        case 3002046: return 25;
        case 3002048: return 25;
        case 3002049: return 25;
        case 3002053: return 65;
        case 3002089: return 55;
        case 3002090: return 55;
        case 3002120: return 55;
        case 3002130: return 55;
        case 3002107: return 38;
        case 3002109: return 38;
        case 3002110: return 38;
        case 3002113: return 75;
        case 3002115: return 70;
        case 3002301: return 0;
        case 3002116: return 70;
        case 3002052: return 10;
        case 3002112: return 10;
        case 3002225: return 5;
        case 3002501: return 15;
        case 3002506: return 15;
        case 3002511: return 15;
        case 3002517: return 10;
        case 3002059: return 30;
        case 3002060: return 42;
        case 3002041: return 25;
        case 3002103: return 38;
        case 3002800: return 0;
        case 3003046: return 25;
        case 3003048: return 25;
        case 3003049: return 25;
        case 3003053: return 65;
        case 3003089: return 50;
        case 3003090: return 50;
        case 3003107: return 38;
        case 3003109: return 38;
        case 3003110: return 38;
        case 3003113: return 75;
        case 3003115: return 55;
        case 3003116: return 75;
        case 3003052: return 10;
        case 3003112: return 10;
        case 3003225: return 5;
        case 3003501: return 15;
        case 3003506: return 15;
        case 3003511: return 15;
        case 3003517: return 10;
        case 3003059: return 30;
        case 3003060: return 42;
        case 3003041: return 25;
        case 3003103: return 38;
        case 3004046: return 25;
        case 3004048: return 25;
        case 3004049: return 25;
        case 3004053: return 65;
        case 3004089: return 50;
        case 3004090: return 50;
        case 3004107: return 38;
        case 3004109: return 38;
        case 3004110: return 38;
        case 3004113: return 75;
        case 3004115: return 68;
        case 3004116: return 68;
        case 3004052: return 10;
        case 3004112: return 10;
        case 3004225: return 5;
        case 3004501: return 15;
        case 3004506: return 15;
        case 3004511: return 15;
        case 3004517: return 10;
        case 3004059: return 30;
        case 3004060: return 42;
        case 3004041: return 25;
        case 3004103: return 38;
        case 3200046: return 35;
        case 3200048: return 35;
        case 3200049: return 35;
        case 3200053: return 70;
        case 3200089: return 74;
        case 3200101: return 0;
        case 3200090: return 74;
        case 3200107: return 48;
        case 3200109: return 48;
        case 3200110: return 48;
        case 3200113: return 90;
        case 3200115: return 85;
        case 3200301: return 0;
        case 3200116: return 85;
        case 3200052: return 10;
        case 3200112: return 10;
        case 3200225: return 5;
        case 3200501: return 15;
        case 3200506: return 15;
        case 3200511: return 15;
        case 3200517: return 10;
        case 3200059: return 45;
        case 3200060: return 55;
        case 3200041: return 35;
        case 3200103: return 48;
        case 3201046: return 35;
        case 3201048: return 35;
        case 3201049: return 35;
        case 3201053: return 70;
        case 3201089: return 74;
        case 3201101: return 0;
        case 3201090: return 74;
        case 3201107: return 48;
        case 3201109: return 48;
        case 3201110: return 48;
        case 3201113: return 90;
        case 3201115: return 110;
        case 3201301: return 0;
        case 3201116: return 110;
        case 3201320: return 110;
        case 3201330: return 110;
        case 3201052: return 10;
        case 3201112: return 10;
        case 3201225: return 5;
        case 3201501: return 15;
        case 3201506: return 15;
        case 3201511: return 15;
        case 3201517: return 10;
        case 3201059: return 45;
        case 3201060: return 55;
        case 3201041: return 35;
        case 3201103: return 48;
        case 3201800: return 0;
        case 3202046: return 35;
        case 3202048: return 35;
        case 3202049: return 35;
        case 3202053: return 70;
        case 3202089: return 70;
        case 3202101: return 0;
        case 3202090: return 70;
        case 3202107: return 48;
        case 3202109: return 48;
        case 3202110: return 48;
        case 3202113: return 90;
        case 3202115: return 100;
        case 3202301: return 0;
        case 3202116: return 100;
        case 3202052: return 10;
        case 3202112: return 10;
        case 3202225: return 5;
        case 3202501: return 15;
        case 3202506: return 15;
        case 3202511: return 15;
        case 3202517: return 10;
        case 3202059: return 45;
        case 3202060: return 55;
        case 3202041: return 35;
        case 3202103: return 48;
        case 3203046: return 35;
        case 3203048: return 35;
        case 3203049: return 35;
        case 3203053: return 70;
        case 3203089: return 80;
        case 3203101: return 0;
        case 3203090: return 80;
        case 3203107: return 48;
        case 3203109: return 48;
        case 3203110: return 48;
        case 3203113: return 90;
        case 3203115: return 110;
        case 3203301: return 0;
        case 3203116: return 110;
        case 3203052: return 10;
        case 3203112: return 10;
        case 3203225: return 5;
        case 3203501: return 15;
        case 3203506: return 15;
        case 3203511: return 15;
        case 3203517: return 10;
        case 3203059: return 45;
        case 3203060: return 55;
        case 3203041: return 35;
        case 3203103: return 48;
        case 3204046: return 35;
        case 3204048: return 35;
        case 3204049: return 35;
        case 3204053: return 70;
        case 3204089: return 65;
        case 3204101: return 0;
        case 3204090: return 65;
        case 3204107: return 48;
        case 3204109: return 48;
        case 3204110: return 48;
        case 3204113: return 90;
        case 3204115: return 80;
        case 3204301: return 0;
        case 3204116: return 80;
        case 3204052: return 10;
        case 3204112: return 10;
        case 3204225: return 5;
        case 3204501: return 15;
        case 3204506: return 15;
        case 3204511: return 15;
        case 3204517: return 10;
        case 3204059: return 45;
        case 3204060: return 55;
        case 3204041: return 35;
        case 3204103: return 48;
        case 3300046: return 25;
        case 3300048: return 25;
        case 3300049: return 25;
        case 3300053: return 65;
        case 3300089: return 50;
        case 3300090: return 50;
        case 3300107: return 38;
        case 3300109: return 38;
        case 3300110: return 38;
        case 3300113: return 75;
        case 3300115: return 68;
        case 3300116: return 68;
        case 3300052: return 10;
        case 3300112: return 10;
        case 3300225: return 5;
        case 3300501: return 15;
        case 3300506: return 15;
        case 3300511: return 15;
        case 3300517: return 10;
        case 3300059: return 30;
        case 3300060: return 42;
        case 3300041: return 25;
        case 3300103: return 38;
        case 3301046: return 25;
        case 3301048: return 25;
        case 3301049: return 25;
        case 3301053: return 65;
        case 3301089: return 50;
        case 3301090: return 50;
        case 3301107: return 38;
        case 3301109: return 38;
        case 3301110: return 38;
        case 3301113: return 75;
        case 3301115: return 65;
        case 3301116: return 65;
        case 3301052: return 10;
        case 3301112: return 10;
        case 3301225: return 5;
        case 3301501: return 15;
        case 3301506: return 15;
        case 3301511: return 15;
        case 3301517: return 10;
        case 3301059: return 30;
        case 3301060: return 42;
        case 3301041: return 25;
        case 3301103: return 38;
        case 3302046: return 25;
        case 3302048: return 25;
        case 3302049: return 25;
        case 3302053: return 65;
        case 3302089: return 65;
        case 3302090: return 45;
        case 3302107: return 38;
        case 3302109: return 38;
        case 3302110: return 38;
        case 3302113: return 75;
        case 3302115: return 75;
        case 3302116: return 55;
        case 3302052: return 10;
        case 3302112: return 10;
        case 3302225: return 5;
        case 3302501: return 15;
        case 3302506: return 15;
        case 3302511: return 15;
        case 3302517: return 10;
        case 3302059: return 30;
        case 3302060: return 42;
        case 3302041: return 25;
        case 3302103: return 38;
        case 3303046: return 25;
        case 3303048: return 25;
        case 3303049: return 25;
        case 3303053: return 65;
        case 3303089: return 50;
        case 3303090: return 50;
        case 3303107: return 38;
        case 3303109: return 38;
        case 3303110: return 38;
        case 3303113: return 75;
        case 3303115: return 65;
        case 3303116: return 65;
        case 3303052: return 10;
        case 3303112: return 10;
        case 3303225: return 5;
        case 3303501: return 15;
        case 3303506: return 15;
        case 3303511: return 15;
        case 3303517: return 10;
        case 3303059: return 30;
        case 3303060: return 42;
        case 3303041: return 25;
        case 3303103: return 38;
        case 3500046: return 35;
        case 3500048: return 35;
        case 3500049: return 35;
        case 3500053: return 70;
        case 3500089: return 74;
        case 3500101: return 0;
        case 3500090: return 74;
        case 3500107: return 48;
        case 3500109: return 48;
        case 3500110: return 48;
        case 3500113: return 90;
        case 3500115: return 85;
        case 3500301: return 0;
        case 3500116: return 85;
        case 3500052: return 10;
        case 3500112: return 10;
        case 3500225: return 5;
        case 3500501: return 15;
        case 3500506: return 15;
        case 3500511: return 15;
        case 3500517: return 10;
        case 3500059: return 45;
        case 3500060: return 55;
        case 3500041: return 35;
        case 3500103: return 48;
        case 3500800: return 0;
        case 3501046: return 35;
        case 3501048: return 35;
        case 3501049: return 35;
        case 3501053: return 70;
        case 3501089: return 80;
        case 3501101: return 0;
        case 3501090: return 80;
        case 3501107: return 48;
        case 3501109: return 48;
        case 3501110: return 48;
        case 3501113: return 90;
        case 3501115: return 110;
        case 3501301: return 0;
        case 3501116: return 110;
        case 3501052: return 10;
        case 3501112: return 10;
        case 3501225: return 5;
        case 3501501: return 15;
        case 3501506: return 15;
        case 3501511: return 15;
        case 3501517: return 10;
        case 3501059: return 45;
        case 3501060: return 55;
        case 3501041: return 35;
        case 3501103: return 48;
        case 3502046: return 35;
        case 3502048: return 35;
        case 3502049: return 35;
        case 3502053: return 70;
        case 3502089: return 65;
        case 3502101: return 0;
        case 3502090: return 85;
        case 3502107: return 48;
        case 3502109: return 48;
        case 3502110: return 48;
        case 3502113: return 90;
        case 3502115: return 105;
        case 3502301: return 0;
        case 3502116: return 105;
        case 3502052: return 10;
        case 3502112: return 10;
        case 3502225: return 5;
        case 3502501: return 15;
        case 3502506: return 15;
        case 3502511: return 15;
        case 3502517: return 10;
        case 3502059: return 45;
        case 3502060: return 55;
        case 3502041: return 35;
        case 3502103: return 48;
        case 3503046: return 35;
        case 3503048: return 35;
        case 3503049: return 35;
        case 3503053: return 70;
        case 3503089: return 100;
        case 3503101: return 0;
        case 3503090: return 100;
        case 3503107: return 48;
        case 3503109: return 48;
        case 3503110: return 48;
        case 3503113: return 90;
        case 3503115: return 130;
        case 3503301: return 0;
        case 3503116: return 130;
        case 3503052: return 10;
        case 3503112: return 10;
        case 3503225: return 5;
        case 3503501: return 15;
        case 3503506: return 15;
        case 3503511: return 15;
        case 3503517: return 10;
        case 3503059: return 45;
        case 3503060: return 55;
        case 3503041: return 35;
        case 3503103: return 48;
        case 4200046: return 20;
        case 4200048: return 20;
        case 4200049: return 20;
        case 4200053: return 52;
        case 4200089: return 40;
        case 4200090: return 50;
        case 4200052: return 10;
        case 4200225: return 5;
        case 4200501: return 15;
        case 4200506: return 15;
        case 4200511: return 15;
        case 4200517: return 10;
        case 4200059: return 30;
        case 4200041: return 20;
        case 4201046: return 18;
        case 4201048: return 18;
        case 4201049: return 18;
        case 4201053: return 47;
        case 4201089: return 36;
        case 4201090: return 45;
        case 4201052: return 10;
        case 4201225: return 5;
        case 4201501: return 14;
        case 4201506: return 14;
        case 4201511: return 14;
        case 4201517: return 9;
        case 4201059: return 27;
        case 4201041: return 18;
        case 4201700: return 15;
        case 4201701: return 15;
        case 4201702: return 15;
        case 4201703: return 15;
        case 4201900: return 30;
        case 4201901: return 80;
        case 4201902: return 20;
        case 4201903: return 40;
        case 4201904: return 30;
        case 4201905: return 75;
        case 4201906: return 0;
        case 4201907: return 75;
        case 4201908: return 100;
        case 4202046: return 20;
        case 4202048: return 20;
        case 4202049: return 20;
        case 4202053: return 52;
        case 4202089: return 40;
        case 4202090: return 40;
        case 4202052: return 10;
        case 4202225: return 5;
        case 4202501: return 15;
        case 4202506: return 15;
        case 4202511: return 15;
        case 4202517: return 10;
        case 4202059: return 30;
        case 4202041: return 25;
        case 4203046: return 20;
        case 4203048: return 20;
        case 4203049: return 20;
        case 4203053: return 52;
        case 4203089: return 20;
        case 4203090: return 20;
        case 4203120: return 20;
        case 4203130: return 20;
        case 4203405: return 20;
        case 4203052: return 10;
        case 4203225: return 5;
        case 4203501: return 15;
        case 4203506: return 15;
        case 4203511: return 15;
        case 4203517: return 10;
        case 4203059: return 30;
        case 4203041: return 20;
        case 4204046: return 20;
        case 4204048: return 20;
        case 4204049: return 20;
        case 4204053: return 52;
        case 4204089: return 120;
        case 4204090: return 120;
        case 4204052: return 10;
        case 4204225: return 5;
        case 4204501: return 15;
        case 4204506: return 15;
        case 4204511: return 15;
        case 4204517: return 10;
        case 4204059: return 30;
        case 4204041: return 20;
        case 3600046: return 25;
        case 3600048: return 25;
        case 3600049: return 25;
        case 3600053: return 65;
        case 3600089: return 55;
        case 3600090: return 55;
        case 3600107: return 35;
        case 3600109: return 35;
        case 3600110: return 35;
        case 3600113: return 75;
        case 3600115: return 75;
        case 3600116: return 75;
        case 3600052: return 10;
        case 3600112: return 10;
        case 3600460: return 40;
        case 3600225: return 20;
        case 3600059: return 30;
        case 3600060: return 40;
        case 3600041: return 25;
        case 3600103: return 35;
        case 3601046: return 30;
        case 3601048: return 30;
        case 3601049: return 30;
        case 3601053: return 78;
        case 3601089: return 75;
        case 3601090: return 75;
        case 3601107: return 42;
        case 3601109: return 42;
        case 3601110: return 42;
        case 3601113: return 90;
        case 3601115: return 90;
        case 3601116: return 90;
        case 3601052: return 10;
        case 3601112: return 10;
        case 3601460: return 48;
        case 3601225: return 20;
        case 3601059: return 20;
        case 3601521: return 40;
        case 3601060: return 25;
        case 3601531: return 50;
        case 3601041: return 30;
        case 3601103: return 42;
        case 3602046: return 25;
        case 3602048: return 25;
        case 3602049: return 25;
        case 3602053: return 65;
        case 3602089: return 40;
        case 3602101: return 10;
        case 3602090: return 40;
        case 3602107: return 35;
        case 3602109: return 35;
        case 3602110: return 35;
        case 3602113: return 75;
        case 3602115: return 75;
        case 3602116: return 75;
        case 3602052: return 10;
        case 3602112: return 10;
        case 3602460: return 40;
        case 3602225: return 20;
        case 3602059: return 30;
        case 3602060: return 40;
        case 3602041: return 25;
        case 3602103: return 35;
        case 3602800: return 0;
        case 3603046: return 25;
        case 3603048: return 25;
        case 3603049: return 25;
        case 3603053: return 65;
        case 3603089: return 72;
        case 3603090: return 72;
        case 3603120: return 72;
        case 3603130: return 72;
        case 3603107: return 35;
        case 3603109: return 35;
        case 3603110: return 35;
        case 3603113: return 75;
        case 3603115: return 65;
        case 3603116: return 85;
        case 3603052: return 10;
        case 3603112: return 10;
        case 3603460: return 40;
        case 3603225: return 20;
        case 3603059: return 30;
        case 3603060: return 40;
        case 3603041: return 25;
        case 3603103: return 35;
        case 3603800: return 0;
        case 3604046: return 25;
        case 3604048: return 25;
        case 3604049: return 25;
        case 3604053: return 65;
        case 3604089: return 55;
        case 3604090: return 55;
        case 3604107: return 35;
        case 3604109: return 35;
        case 3604110: return 35;
        case 3604113: return 75;
        case 3604115: return 64;
        case 3604116: return 64;
        case 3604052: return 10;
        case 3604112: return 10;
        case 3604460: return 40;
        case 3604225: return 20;
        case 3604059: return 30;
        case 3604060: return 40;
        case 3604041: return 25;
        case 3604103: return 35;
        case 3605046: return 25;
        case 3605048: return 25;
        case 3605049: return 25;
        case 3605053: return 65;
        case 3605089: return 100;
        case 3605090: return 100;
        case 3605107: return 35;
        case 3605109: return 35;
        case 3605110: return 35;
        case 3605113: return 75;
        case 3605115: return 120;
        case 3605116: return 120;
        case 3605052: return 10;
        case 3605112: return 10;
        case 3605460: return 40;
        case 3605225: return 20;
        case 3605059: return 30;
        case 3605060: return 40;
        case 3605041: return 25;
        case 3605103: return 35;
        case 3606046: return 25;
        case 3606048: return 25;
        case 3606049: return 25;
        case 3606053: return 65;
        case 3606089: return 60;
        case 3606090: return 60;
        case 3606107: return 35;
        case 3606109: return 35;
        case 3606110: return 35;
        case 3606113: return 75;
        case 3606115: return 75;
        case 3606116: return 75;
        case 3606052: return 10;
        case 3606112: return 10;
        case 3606460: return 40;
        case 3606225: return 20;
        case 3606059: return 30;
        case 3606060: return 40;
        case 3606041: return 25;
        case 3606103: return 35;
        case 3607046: return 30;
        case 3607048: return 30;
        case 3607049: return 30;
        case 3607053: return 78;
        case 3607089: return 66;
        case 3607090: return 66;
        case 3607107: return 42;
        case 3607109: return 42;
        case 3607110: return 42;
        case 3607113: return 90;
        case 3607115: return 85;
        case 3607301: return 20;
        case 3607052: return 10;
        case 3607112: return 10;
        case 3607460: return 48;
        case 3607225: return 24;
        case 3607059: return 36;
        case 3607060: return 48;
        case 3607041: return 30;
        case 3607103: return 42;
        case 3800046: return 30;
        case 3800048: return 30;
        case 3800049: return 30;
        case 3800053: return 70;
        case 3800089: return 55;
        case 3800090: return 55;
        case 3800107: return 40;
        case 3800109: return 40;
        case 3800110: return 40;
        case 3800113: return 80;
        case 3800115: return 90;
        case 3800301: return 0;
        case 3800116: return 90;
        case 3800052: return 10;
        case 3800112: return 10;
        case 3800225: return 20;
        case 3800059: return 35;
        case 3800060: return 45;
        case 3800041: return 30;
        case 3800103: return 40;
        case 3801046: return 30;
        case 3801048: return 30;
        case 3801049: return 30;
        case 3801053: return 70;
        case 3801089: return 55;
        case 3801090: return 55;
        case 3801107: return 40;
        case 3801109: return 40;
        case 3801110: return 40;
        case 3801113: return 80;
        case 3801115: return 90;
        case 3801301: return 0;
        case 3801116: return 90;
        case 3801052: return 10;
        case 3801112: return 10;
        case 3801225: return 20;
        case 3801059: return 35;
        case 3801060: return 45;
        case 3801041: return 30;
        case 3801103: return 40;
        case 3802046: return 30;
        case 3802048: return 30;
        case 3802049: return 30;
        case 3802053: return 70;
        case 3802089: return 55;
        case 3802090: return 55;
        case 3802107: return 40;
        case 3802109: return 40;
        case 3802110: return 40;
        case 3802113: return 80;
        case 3802115: return 90;
        case 3802301: return 0;
        case 3802116: return 90;
        case 3802052: return 10;
        case 3802112: return 10;
        case 3802225: return 20;
        case 3802059: return 35;
        case 3802060: return 45;
        case 3802041: return 30;
        case 3802103: return 40;
        case 3803046: return 30;
        case 3803048: return 30;
        case 3803049: return 30;
        case 3803053: return 70;
        case 3803089: return 60;
        case 3803090: return 60;
        case 3803107: return 40;
        case 3803109: return 40;
        case 3803110: return 40;
        case 3803113: return 80;
        case 3803115: return 77;
        case 3803301: return 0;
        case 3803116: return 77;
        case 3803052: return 10;
        case 3803112: return 10;
        case 3803225: return 20;
        case 3803059: return 35;
        case 3803060: return 45;
        case 3803041: return 30;
        case 3803103: return 40;
        case 3804046: return 30;
        case 3804048: return 30;
        case 3804049: return 30;
        case 3804053: return 70;
        case 3804089: return 95;
        case 3804090: return 95;
        case 3804107: return 40;
        case 3804109: return 40;
        case 3804110: return 40;
        case 3804113: return 80;
        case 3804115: return 110;
        case 3804301: return 0;
        case 3804116: return 110;
        case 3804052: return 10;
        case 3804112: return 10;
        case 3804225: return 20;
        case 3804059: return 35;
        case 3804060: return 45;
        case 3804041: return 30;
        case 3804103: return 40;
        case 3805046: return 30;
        case 3805048: return 30;
        case 3805049: return 30;
        case 3805053: return 70;
        case 3805089: return 80;
        case 3805090: return 80;
        case 3805107: return 40;
        case 3805109: return 40;
        case 3805110: return 40;
        case 3805113: return 80;
        case 3805115: return 95;
        case 3805301: return 0;
        case 3805116: return 95;
        case 3805052: return 10;
        case 3805112: return 10;
        case 3805225: return 20;
        case 3805059: return 35;
        case 3805060: return 45;
        case 3805041: return 30;
        case 3805103: return 40;
        case 5000046: return 30;
        case 5000048: return 30;
        case 5000049: return 30;
        case 5000053: return 70;
        case 5000089: return 55;
        case 5000090: return 55;
        case 5000107: return 40;
        case 5000109: return 40;
        case 5000110: return 40;
        case 5000113: return 80;
        case 5000115: return 72;
        case 5000116: return 72;
        case 5000052: return 10;
        case 5000112: return 10;
        case 5000225: return 20;
        case 5000059: return 35;
        case 5000060: return 45;
        case 5000041: return 30;
        case 5000103: return 40;
        case 4400046: return 20;
        case 4400089: return 20;
        case 4400107: return 20;
        case 4400115: return 20;
        case 4400052: return 10;
        case 4400112: return 10;
        case 4400225: return 20;
        case 4400059: return 20;
        case 4400060: return 20;
        case 4400041: return 20;
        case 4400103: return 20;
        case 4600046: return 20;
        case 4600089: return 20;
        case 4600107: return 20;
        case 4600115: return 20;
        case 4600052: return 10;
        case 4600112: return 10;
        case 4600225: return 20;
        case 4600059: return 20;
        case 4600060: return 20;
        case 4600041: return 20;
        case 4600103: return 20;
        case 4100046: return 15;
        case 4100089: return 15;
        case 4100107: return 15;
        case 4100115: return 15;
        case 4101046: return 15;
        case 4101089: return 15;
        case 4101107: return 15;
        case 4101115: return 15;
        case 4102046: return 20;
        case 4102089: return 30;
        case 4102107: return 20;
        case 4102115: return 40;
        case 4103046: return 15;
        case 4103089: return 15;
        case 4103107: return 15;
        case 4103115: return 15;
        case 4103052: return 10;
        case 4103112: return 10;
        case 4104046: return 20;
        case 4104089: return 65;
        case 4104090: return 70;
        case 4104107: return 20;
        case 4104115: return 80;
        case 4104116: return 85;
        case 4800046: return 20;
        case 4800048: return 20;
        case 4800049: return 20;
        case 4800053: return 52;
        case 4800089: return 30;
        case 4800090: return 30;
        case 4800107: return 25;
        case 4800109: return 25;
        case 4800110: return 25;
        case 4800113: return 60;
        case 4800115: return 40;
        case 4800301: return 10;
        case 4800116: return 40;
        case 4800052: return 15;
        case 4800112: return 15;
        case 4800059: return 30;
        case 4800521: return 0;
        case 4800060: return 35;
        case 4800531: return 0;
        case 4800041: return 20;
        case 4800103: return 25;
        case 4801046: return 18;
        case 4801048: return 18;
        case 4801049: return 18;
        case 4801053: return 47;
        case 4801089: return 27;
        case 4801090: return 27;
        case 4801107: return 23;
        case 4801109: return 23;
        case 4801110: return 23;
        case 4801113: return 54;
        case 4801115: return 36;
        case 4801301: return 9;
        case 4801116: return 36;
        case 4801052: return 14;
        case 4801112: return 14;
        case 4801059: return 27;
        case 4801521: return 0;
        case 4801060: return 32;
        case 4801531: return 0;
        case 4801041: return 18;
        case 4801103: return 23;
        case 4802046: return 20;
        case 4802048: return 20;
        case 4802049: return 20;
        case 4802053: return 52;
        case 4802089: return 40;
        case 4802090: return 40;
        case 4802120: return 40;
        case 4802130: return 40;
        case 4802107: return 25;
        case 4802109: return 25;
        case 4802110: return 25;
        case 4802113: return 60;
        case 4802115: return 40;
        case 4802116: return 40;
        case 4802320: return 40;
        case 4802330: return 40;
        case 4802405: return 40;
        case 4802052: return 15;
        case 4802112: return 15;
        case 4802059: return 30;
        case 4802521: return 0;
        case 4802060: return 35;
        case 4802531: return 0;
        case 4802041: return 20;
        case 4802103: return 25;
        case 4802800: return 0;
        case 4803046: return 20;
        case 4803048: return 20;
        case 4803049: return 20;
        case 4803053: return 52;
        case 4803089: return 30;
        case 4803090: return 30;
        case 4803107: return 25;
        case 4803109: return 25;
        case 4803110: return 25;
        case 4803113: return 60;
        case 4803115: return 40;
        case 4803301: return 10;
        case 4803116: return 40;
        case 4803052: return 15;
        case 4803112: return 15;
        case 4803059: return 30;
        case 4803521: return 0;
        case 4803060: return 35;
        case 4803531: return 0;
        case 4803041: return 20;
        case 4803103: return 25;
        case 4700046: return 35;
        case 4700048: return 35;
        case 4700049: return 35;
        case 4700053: return 80;
        case 4700089: return 60;
        case 4700090: return 60;
        case 4700107: return 45;
        case 4700109: return 45;
        case 4700110: return 45;
        case 4700113: return 90;
        case 4700115: return 80;
        case 4700116: return 80;
        case 4700052: return 20;
        case 4700112: return 20;
        case 4700059: return 45;
        case 4700521: return 0;
        case 4700060: return 55;
        case 4700531: return 0;
        case 4700041: return 35;
        case 4700103: return 40;
        case 4700601: return 0;
        case 4700800: return 0;
        case 4701046: return 32;
        case 4701048: return 32;
        case 4701049: return 32;
        case 4701053: return 72;
        case 4701089: return 54;
        case 4701090: return 54;
        case 4701107: return 41;
        case 4701109: return 41;
        case 4701110: return 41;
        case 4701113: return 81;
        case 4701115: return 72;
        case 4701116: return 72;
        case 4701052: return 18;
        case 4701112: return 18;
        case 4701059: return 41;
        case 4701521: return 0;
        case 4701060: return 50;
        case 4701531: return 0;
        case 4701041: return 32;
        case 4701103: return 36;
        case 4701601: return 0;
        case 4702046: return 32;
        case 4702048: return 32;
        case 4702049: return 32;
        case 4702053: return 72;
        case 4702089: return 30;
        case 4702090: return 30;
        case 4702107: return 41;
        case 4702109: return 41;
        case 4702110: return 41;
        case 4702113: return 81;
        case 4702115: return 30;
        case 4702116: return 30;
        case 4702052: return 18;
        case 4702112: return 18;
        case 4702059: return 41;
        case 4702521: return 0;
        case 4702060: return 50;
        case 4702531: return 0;
        case 4702041: return 32;
        case 4702103: return 36;
        case 4702601: return 0;
        case 4300046: return 25;
        case 4300048: return 25;
        case 4300049: return 25;
        case 4300053: return 60;
        case 4300089: return 35;
        case 4300090: return 40;
        case 4300107: return 35;
        case 4300109: return 35;
        case 4300110: return 35;
        case 4300113: return 70;
        case 4300115: return 55;
        case 4300116: return 55;
        case 4300052: return 10;
        case 4300112: return 10;
        case 4300059: return 30;
        case 4300060: return 40;
        case 4300041: return 25;
        case 4300103: return 35;
        case 1000115: return 30;
        case 1001115: return 30;
        case 1002115: return 30;
        case 1003115: return 30;
        case 1004115: return 30;
        case 1005115: return 30;
        case 1006115: return 30;
        case 1007115: return 120;
        case 1008115: return 120;
        case 1100115: return 0;
        case 1101115: return 0;
        case 1102115: return 0;
        case 1103115: return 0;
        case 1104115: return 0;
        default: return 0;
    }
}

//for poise damage, 
//rolling 1h/2h is the same as the respective r1's.
// any combo's are same as first attack.
//convert to same id for same hash handling
static unsigned short CompressAnimationTypes(unsigned short animationType_id){
    switch (animationType_id){
        //1h rolling attack
    case 41:
        return 46;
        //1h r1 swing 2
    case 48:
        return 46;
        //1h r1 swing 3
    case 49:
        return 46;
        //1h r1 into r2 combo
    case 88:
        return 89;
        //1h r2 combo
    case 90:
        return 89;
        //rolling attack 2h
    case 103:
        return 107;
        //2h r1 combo 1
    case 109:
        return 107;
        //2h r1 combo 2
    case 110:
        return 107;
        //2h r1 into r2 combo
    case 114:
        return 115;
        //2h r2 combo
    case 116:
        return 115;
    default:
        return animationType_id;
    }
}

static float WeaponAndAttackTypeToPoiseDamage(unsigned int Weapon_AnimationType_hash);

float PoiseDamageForAttack(unsigned int weapon_id, unsigned short animationType_id){
    //only interested in weapon type, above 100's place
    unsigned int weaponType = weapon_id / 1000;
    //concatinate weaponType and animation type to allow hash table lookup
    unsigned int Weapon_AnimationType_hash = (weaponType * 1000) + CompressAnimationTypes(animationType_id);
    //then match weapon type id and animation type to poise damage
    return WeaponAndAttackTypeToPoiseDamage(Weapon_AnimationType_hash);
}

//yeah, couldnt even figure out how to read this from memory
static float WeaponAndAttackTypeToPoiseDamage(unsigned int Weapon_AnimationType_hash){
    switch (Weapon_AnimationType_hash){
        case 100046: return 35;
        case 100107: return 52.5;
        case 100089: return 38.5;
        case 100115: return 63;
        case 100059: return 38.5;
        case 100060: return 56;
        case 100053: return 35;
        case 100113: return 52.5;
        case 100052: return 0;
        case 100112: return 0;
        case 101046: return 5;
        case 101107: return 7.5;
        case 101089: return 6;
        case 101115: return 7.5;
        case 101059: return 5.5;
        case 101060: return 8;
        case 101053: return 5;
        case 101113: return 7.5;
        case 101052: return 0;
        case 101112: return 0;
        case 102046: return 5;
        case 102107: return 7.5;
        case 102089: return 5;
        case 102115: return 5;
        case 102059: return 5.5;
        case 102060: return 8;
        case 102053: return 5;
        case 102113: return 7.5;
        case 102052: return 0;
        case 102112: return 0;
        case 103046: return 5;
        case 103107: return 7.5;
        case 103089: return 6;
        case 103115: return 5;
        case 103059: return 5.5;
        case 103060: return 8;
        case 103053: return 5;
        case 103113: return 7.5;
        case 103052: return 0;
        case 103112: return 0;
        case 104046: return 5;
        case 104107: return 7.5;
        case 104089: return 5;
        case 104115: return 5;
        case 104059: return 5.5;
        case 104060: return 8;
        case 104053: return 5;
        case 104113: return 7.5;
        case 104052: return 0;
        case 104112: return 0;
        case 200046: return 20;
        case 200107: return 30;
        case 200089: return 24;
        case 200115: return 30;
        case 200059: return 22;
        case 200060: return 32;
        case 200053: return 20;
        case 200113: return 30;
        case 200052: return 0;
        case 200112: return 0;
        case 201046: return 20;
        case 201107: return 30;
        case 201089: return 24;
        case 201115: return 30;
        case 201059: return 22;
        case 201060: return 32;
        case 201053: return 20;
        case 201113: return 30;
        case 201052: return 0;
        case 201112: return 0;
        case 202046: return 20;
        case 202107: return 30;
        case 202089: return 20;
        case 202115: return 30;
        case 202059: return 22;
        case 202060: return 32;
        case 202053: return 20;
        case 202113: return 30;
        case 202052: return 0;
        case 202112: return 0;
        case 204046: return 20;
        case 204107: return 30;
        case 204089: return 22;
        case 204115: return 30;
        case 204059: return 22;
        case 204060: return 32;
        case 204053: return 20;
        case 204113: return 30;
        case 204052: return 0;
        case 204112: return 0;
        case 205046: return 20;
        case 205107: return 30;
        case 205089: return 24;
        case 205115: return 30;
        case 205059: return 22;
        case 205060: return 32;
        case 205053: return 20;
        case 205113: return 30;
        case 205052: return 0;
        case 205112: return 0;
        case 206046: return 20;
        case 206107: return 30;
        case 206089: return 24;
        case 206115: return 30;
        case 206059: return 22;
        case 206060: return 32;
        case 206053: return 20;
        case 206113: return 30;
        case 206052: return 0;
        case 206112: return 0;
        case 207046: return 20;
        case 207107: return 30;
        case 207089: return 20;
        case 207115: return 30;
        case 207059: return 22;
        case 207060: return 32;
        case 207053: return 20;
        case 207113: return 30;
        case 207052: return 0;
        case 207112: return 0;
        case 208046: return 20;
        case 208107: return 30;
        case 208089: return 26;
        case 208115: return 36;
        case 208059: return 22;
        case 208060: return 32;
        case 208053: return 20;
        case 208113: return 30;
        case 208052: return 0;
        case 208112: return 0;
        case 209046: return 20;
        case 209107: return 30;
        case 209089: return 24;
        case 209115: return 30;
        case 209059: return 22;
        case 209060: return 32;
        case 209053: return 20;
        case 209113: return 30;
        case 209052: return 0;
        case 209112: return 0;
        case 210046: return 20;
        case 210107: return 30;
        case 210089: return 26;
        case 210115: return 36;
        case 210059: return 22;
        case 210060: return 32;
        case 210053: return 20;
        case 210113: return 30;
        case 210052: return 0;
        case 210112: return 0;
        case 211046: return 20;
        case 211107: return 30;
        case 211089: return 20;
        case 211115: return 30;
        case 211059: return 22;
        case 211060: return 32;
        case 211053: return 20;
        case 211113: return 30;
        case 211052: return 0;
        case 211112: return 0;
        case 300046: return 35;
        case 300107: return 52.5;
        case 300089: return 52.5;
        case 300115: return 52.5;
        case 300059: return 38.5;
        case 300060: return 56;
        case 300053: return 35;
        case 300113: return 52.5;
        case 300052: return 0;
        case 300112: return 0;
        case 301046: return 35;
        case 301107: return 52.5;
        case 301089: return 52.5;
        case 301115: return 52.5;
        case 301059: return 38.5;
        case 301060: return 56;
        case 301053: return 35;
        case 301113: return 52.5;
        case 301052: return 0;
        case 301112: return 0;
        case 302046: return 35;
        case 302107: return 52.5;
        case 302089: return 52.5;
        case 302115: return 52.5;
        case 302059: return 38.5;
        case 302060: return 56;
        case 302053: return 35;
        case 302113: return 52.5;
        case 302052: return 0;
        case 302112: return 0;
        case 303046: return 35;
        case 303107: return 52.5;
        case 303089: return 35;
        case 303115: return 52.5;
        case 303059: return 38.5;
        case 303060: return 56;
        case 303053: return 35;
        case 303113: return 52.5;
        case 303052: return 0;
        case 303112: return 0;
        case 304046: return 35;
        case 304107: return 52.5;
        case 304089: return 52.5;
        case 304115: return 52.5;
        case 304059: return 38.5;
        case 304060: return 56;
        case 304053: return 35;
        case 304113: return 52.5;
        case 304052: return 0;
        case 304112: return 0;
        case 306046: return 35;
        case 306107: return 52.5;
        case 306089: return 70;
        case 306115: return 0;
        case 306059: return 38.5;
        case 306060: return 56;
        case 306053: return 35;
        case 306113: return 52.5;
        case 306052: return 0;
        case 306112: return 0;
        case 307046: return 35;
        case 307107: return 52.5;
        case 307089: return 45.5;
        case 307115: return 63;
        case 307059: return 38.5;
        case 307060: return 56;
        case 307053: return 35;
        case 307113: return 52.5;
        case 307052: return 0;
        case 307112: return 0;
        case 309046: return 35;
        case 309107: return 52.5;
        case 309089: return 35;
        case 309115: return 52.5;
        case 309059: return 38.5;
        case 309060: return 56;
        case 309053: return 35;
        case 309113: return 52.5;
        case 309052: return 0;
        case 309112: return 0;
        case 310046: return 35;
        case 310107: return 52.5;
        case 310089: return 45.5;
        case 310115: return 63;
        case 310059: return 38.5;
        case 310060: return 56;
        case 310053: return 35;
        case 310113: return 52.5;
        case 310052: return 0;
        case 310112: return 0;
        case 311046: return 35;
        case 311107: return 52.5;
        case 311089: return 45.5;
        case 311115: return 63;
        case 311059: return 38.5;
        case 311060: return 56;
        case 311053: return 35;
        case 311113: return 52.5;
        case 311052: return 0;
        case 311112: return 0;
        case 314046: return 35;
        case 314107: return 52.5;
        case 314089: return 45.5;
        case 314115: return 63;
        case 314059: return 38.5;
        case 314060: return 56;
        case 314053: return 35;
        case 314113: return 52.5;
        case 314052: return 0;
        case 314112: return 0;
        case 350046: return 50;
        case 350107: return 75;
        case 350089: return 60;
        case 350115: return 75;
        case 350059: return 55;
        case 350060: return 80;
        case 350053: return 75;
        case 350113: return 75;
        case 350052: return 0;
        case 350112: return 0;
        case 351046: return 50;
        case 351107: return 75;
        case 351089: return 60;
        case 351115: return 75;
        case 351059: return 55;
        case 351060: return 80;
        case 351053: return 75;
        case 351113: return 75;
        case 351052: return 0;
        case 351112: return 0;
        case 352046: return 50;
        case 352107: return 75;
        case 352089: return 60;
        case 352115: return 75;
        case 352059: return 55;
        case 352060: return 80;
        case 352053: return 75;
        case 352113: return 75;
        case 352052: return 0;
        case 352112: return 0;
        case 354046: return 50;
        case 354107: return 75;
        case 354089: return 60;
        case 354115: return 75;
        case 354059: return 55;
        case 354060: return 80;
        case 354053: return 75;
        case 354113: return 75;
        case 354052: return 0;
        case 354112: return 0;
        case 355046: return 50;
        case 355107: return 75;
        case 355089: return 60;
        case 355115: return 75;
        case 355059: return 55;
        case 355060: return 80;
        case 355053: return 75;
        case 355113: return 75;
        case 355052: return 0;
        case 355112: return 0;
        case 400046: return 20;
        case 400107: return 30;
        case 400089: return 10;
        case 400115: return 10;
        case 400059: return 22;
        case 400060: return 32;
        case 400053: return 30;
        case 400113: return 30;
        case 400052: return 20;
        case 400112: return 20;
        case 401046: return 20;
        case 401107: return 30;
        case 401089: return 10;
        case 401115: return 10;
        case 401059: return 22;
        case 401060: return 32;
        case 401053: return 30;
        case 401113: return 30;
        case 401052: return 20;
        case 401112: return 20;
        case 402046: return 20;
        case 402107: return 30;
        case 402089: return 20;
        case 402115: return 30;
        case 402059: return 22;
        case 402060: return 32;
        case 402053: return 30;
        case 402113: return 30;
        case 402052: return 20;
        case 402112: return 20;
        case 403046: return 20;
        case 403107: return 30;
        case 403089: return 10;
        case 403115: return 10;
        case 403059: return 22;
        case 403060: return 32;
        case 403053: return 30;
        case 403113: return 30;
        case 403052: return 20;
        case 403112: return 20;
        case 405046: return 20;
        case 405107: return 30;
        case 405089: return 10;
        case 405115: return 10;
        case 405059: return 22;
        case 405060: return 32;
        case 405053: return 30;
        case 405113: return 30;
        case 405052: return 20;
        case 405112: return 20;
        case 406046: return 20;
        case 406107: return 30;
        case 406089: return 20;
        case 406115: return 30;
        case 406059: return 22;
        case 406060: return 32;
        case 406053: return 30;
        case 406113: return 30;
        case 406052: return 20;
        case 406112: return 20;
        case 450046: return 35;
        case 450107: return 52.5;
        case 450089: return 52.5;
        case 450115: return 52.5;
        case 450059: return 38.5;
        case 450060: return 56;
        case 450053: return 52.5;
        case 450113: return 52.5;
        case 450052: return 0;
        case 450112: return 0;
        case 451046: return 35;
        case 451107: return 52.5;
        case 451089: return 52.5;
        case 451115: return 52.5;
        case 451059: return 38.5;
        case 451060: return 56;
        case 451053: return 52.5;
        case 451113: return 52.5;
        case 451052: return 0;
        case 451112: return 0;
        case 453046: return 35;
        case 453107: return 52.5;
        case 453089: return 52.5;
        case 453115: return 70;
        case 453059: return 38.5;
        case 453060: return 56;
        case 453053: return 52.5;
        case 453113: return 52.5;
        case 453052: return 0;
        case 453112: return 0;
        case 500046: return 20;
        case 500107: return 30;
        case 500089: return 24;
        case 500115: return 30;
        case 500059: return 22;
        case 500060: return 32;
        case 500053: return 30;
        case 500113: return 30;
        case 500052: return 0;
        case 500112: return 0;
        case 501046: return 20;
        case 501107: return 30;
        case 501089: return 24;
        case 501115: return 30;
        case 501059: return 22;
        case 501060: return 32;
        case 501053: return 30;
        case 501113: return 30;
        case 501052: return 0;
        case 501112: return 0;
        case 502046: return 20;
        case 502107: return 30;
        case 502089: return 24;
        case 502115: return 30;
        case 502059: return 22;
        case 502060: return 32;
        case 502053: return 30;
        case 502113: return 30;
        case 502052: return 0;
        case 502112: return 0;
        case 503046: return 20;
        case 503107: return 30;
        case 503089: return 24;
        case 503115: return 40;
        case 503059: return 22;
        case 503060: return 32;
        case 503053: return 30;
        case 503113: return 30;
        case 503052: return 0;
        case 503112: return 0;
        case 600046: return 5;
        case 600107: return 7.5;
        case 600089: return 10;
        case 600115: return 15;
        case 600059: return 5.5;
        case 600060: return 8;
        case 600053: return 7.5;
        case 600113: return 7.5;
        case 600052: return 5;
        case 600112: return 5;
        case 601046: return 5;
        case 601107: return 7.5;
        case 601089: return 10;
        case 601115: return 15;
        case 601059: return 5.5;
        case 601060: return 8;
        case 601053: return 7.5;
        case 601113: return 7.5;
        case 601052: return 5;
        case 601112: return 5;
        case 602046: return 5;
        case 602107: return 7.5;
        case 602089: return 5;
        case 602115: return 7.5;
        case 602059: return 5.5;
        case 602060: return 8;
        case 602053: return 7.5;
        case 602113: return 7.5;
        case 602052: return 5;
        case 602112: return 5;
        case 603046: return 5;
        case 603107: return 7.5;
        case 603089: return 2.5;
        case 603115: return 5;
        case 603059: return 5.5;
        case 603060: return 8;
        case 603053: return 7.5;
        case 603113: return 7.5;
        case 603052: return 5;
        case 603112: return 5;
        case 604046: return 5;
        case 604107: return 7.5;
        case 604089: return 2.5;
        case 604115: return 5;
        case 604059: return 5.5;
        case 604060: return 8;
        case 604053: return 7.5;
        case 604113: return 7.5;
        case 604052: return 5;
        case 604112: return 5;
        case 700046: return 20;
        case 700107: return 30;
        case 700089: return 24;
        case 700115: return 30;
        case 700059: return 22;
        case 700060: return 32;
        case 700053: return 20;
        case 700113: return 30;
        case 700052: return 20;
        case 700112: return 20;
        case 701046: return 35;
        case 701107: return 52.5;
        case 701089: return 42;
        case 701115: return 52.5;
        case 701059: return 38.5;
        case 701060: return 56;
        case 701053: return 35;
        case 701113: return 52.5;
        case 701052: return 35;
        case 701112: return 35;
        case 702046: return 35;
        case 702107: return 52.5;
        case 702089: return 42;
        case 702115: return 52.5;
        case 702059: return 38.5;
        case 702060: return 56;
        case 702053: return 35;
        case 702113: return 52.5;
        case 702052: return 35;
        case 702112: return 35;
        case 703046: return 35;
        case 703107: return 52.5;
        case 703089: return 35;
        case 703115: return 52.5;
        case 703059: return 38.5;
        case 703060: return 56;
        case 703053: return 35;
        case 703113: return 52.5;
        case 703052: return 35;
        case 703112: return 35;
        case 704046: return 35;
        case 704107: return 52.5;
        case 704089: return 105;
        case 704115: return 52.5;
        case 704059: return 38.5;
        case 704060: return 56;
        case 704053: return 35;
        case 704113: return 52.5;
        case 704052: return 35;
        case 704112: return 35;
        case 705046: return 35;
        case 705107: return 52.5;
        case 705089: return 35;
        case 705115: return 52.5;
        case 705059: return 38.5;
        case 705060: return 56;
        case 705053: return 35;
        case 705113: return 52.5;
        case 705052: return 35;
        case 705112: return 35;
        case 750046: return 50;
        case 750107: return 75;
        case 750089: return 60;
        case 750115: return 75;
        case 750059: return 55;
        case 750060: return 80;
        case 750053: return 75;
        case 750113: return 75;
        case 750052: return 0;
        case 750112: return 0;
        case 751046: return 50;
        case 751107: return 75;
        case 751089: return 60;
        case 751115: return 75;
        case 751059: return 55;
        case 751060: return 80;
        case 751053: return 75;
        case 751113: return 75;
        case 751052: return 0;
        case 751112: return 0;
        case 752046: return 50;
        case 752107: return 75;
        case 752089: return 60;
        case 752115: return 150;
        case 752059: return 55;
        case 752060: return 80;
        case 752053: return 75;
        case 752113: return 75;
        case 752052: return 0;
        case 752112: return 0;
        case 753046: return 40;
        case 753107: return 60;
        case 753089: return 60;
        case 753115: return 75;
        case 753059: return 55;
        case 753060: return 80;
        case 753053: return 75;
        case 753113: return 75;
        case 753052: return 0;
        case 753112: return 0;
        case 800046: return 20;
        case 800107: return 30;
        case 800089: return 30;
        case 800115: return 30;
        case 800059: return 22;
        case 800060: return 32;
        case 800053: return 30;
        case 800113: return 30;
        case 800052: return 0;
        case 800112: return 0;
        case 801046: return 35;
        case 801107: return 52.5;
        case 801089: return 42;
        case 801115: return 52.5;
        case 801059: return 38.5;
        case 801060: return 56;
        case 801053: return 52.5;
        case 801113: return 52.5;
        case 801052: return 0;
        case 801112: return 0;
        case 802046: return 35;
        case 802107: return 52.5;
        case 802089: return 42;
        case 802115: return 52.5;
        case 802059: return 38.5;
        case 802060: return 56;
        case 802053: return 52.5;
        case 802113: return 52.5;
        case 802052: return 0;
        case 802112: return 0;
        case 803046: return 20;
        case 803107: return 30;
        case 803089: return 24;
        case 803115: return 30;
        case 803059: return 22;
        case 803060: return 32;
        case 803053: return 30;
        case 803113: return 30;
        case 803052: return 0;
        case 803112: return 0;
        case 804046: return 20;
        case 804107: return 30;
        case 804089: return 24;
        case 804115: return 30;
        case 804059: return 22;
        case 804060: return 32;
        case 804053: return 30;
        case 804113: return 30;
        case 804052: return 0;
        case 804112: return 0;
        case 809046: return 35;
        case 809107: return 52.5;
        case 809089: return 52.5;
        case 809115: return 52.5;
        case 809059: return 38.5;
        case 809060: return 56;
        case 809053: return 52.5;
        case 809113: return 52.5;
        case 809052: return 0;
        case 809112: return 0;
        case 810046: return 35;
        case 810107: return 52.5;
        case 810089: return 42;
        case 810115: return 52.5;
        case 810059: return 38.5;
        case 810060: return 56;
        case 810053: return 52.5;
        case 810113: return 52.5;
        case 810052: return 0;
        case 810112: return 0;
        case 811046: return 35;
        case 811107: return 52.5;
        case 811089: return 52.5;
        case 811115: return 52.5;
        case 811059: return 38.5;
        case 811060: return 56;
        case 811053: return 52.5;
        case 811113: return 52.5;
        case 811052: return 0;
        case 811112: return 0;
        case 812046: return 35;
        case 812107: return 52.5;
        case 812089: return 42;
        case 812115: return 52.5;
        case 812059: return 38.5;
        case 812060: return 56;
        case 812053: return 52.5;
        case 812113: return 52.5;
        case 812052: return 0;
        case 812112: return 0;
        case 850046: return 50;
        case 850107: return 75;
        case 850089: return 50;
        case 850115: return 75;
        case 850059: return 60;
        case 850060: return 85;
        case 850053: return 75;
        case 850113: return 75;
        case 850052: return 0;
        case 850112: return 0;
        case 851046: return 50;
        case 851107: return 75;
        case 851089: return 60;
        case 851115: return 100;
        case 851059: return 60;
        case 851060: return 85;
        case 851053: return 75;
        case 851113: return 75;
        case 851052: return 0;
        case 851112: return 0;
        case 852046: return 50;
        case 852107: return 75;
        case 852089: return 60;
        case 852115: return 75;
        case 852059: return 60;
        case 852060: return 85;
        case 852053: return 75;
        case 852113: return 75;
        case 852052: return 0;
        case 852112: return 0;
        case 854046: return 50;
        case 854107: return 75;
        case 854089: return 60;
        case 854115: return 75;
        case 854059: return 60;
        case 854060: return 85;
        case 854053: return 75;
        case 854113: return 75;
        case 854052: return 0;
        case 854112: return 0;
        case 855046: return 50;
        case 855107: return 75;
        case 855089: return 50;
        case 855115: return 75;
        case 855059: return 60;
        case 855060: return 85;
        case 855053: return 75;
        case 855113: return 75;
        case 855052: return 0;
        case 855112: return 0;
        case 856046: return 50;
        case 856107: return 75;
        case 856089: return 75;
        case 856115: return 100;
        case 856059: return 60;
        case 856060: return 85;
        case 856053: return 75;
        case 856113: return 75;
        case 856052: return 0;
        case 856112: return 0;
        case 900046: return 5;
        case 900107: return 5;
        case 900089: return 6;
        case 900115: return 6;
        case 900059: return 5.5;
        case 900060: return 5.5;
        case 900053: return 7.5;
        case 900113: return 7.5;
        case 900052: return 0;
        case 900112: return 0;
        case 901046: return 20;
        case 901107: return 20;
        case 901089: return 24;
        case 901115: return 24;
        case 901059: return 22;
        case 901060: return 22;
        case 901053: return 30;
        case 901113: return 30;
        case 901052: return 0;
        case 901112: return 0;
        case 902046: return 20;
        case 902107: return 20;
        case 902089: return 24;
        case 902115: return 24;
        case 902059: return 22;
        case 902060: return 22;
        case 902053: return 30;
        case 902113: return 30;
        case 902052: return 0;
        case 902112: return 0;
        case 903046: return 20;
        case 903107: return 20;
        case 903089: return 40;
        case 903115: return 40;
        case 903059: return 22;
        case 903060: return 22;
        case 903053: return 30;
        case 903113: return 30;
        case 903052: return 0;
        case 903112: return 0;
        case 1000046: return 20;
        case 1000107: return 30;
        case 1000089: return 24;
        case 1000115: return 30;
        case 1000059: return 22;
        case 1000060: return 32;
        case 1000053: return 30;
        case 1000113: return 30;
        case 1000052: return 0;
        case 1000112: return 0;
        case 1001046: return 20;
        case 1001107: return 30;
        case 1001089: return 24;
        case 1001115: return 30;
        case 1001059: return 22;
        case 1001060: return 32;
        case 1001053: return 30;
        case 1001113: return 30;
        case 1001052: return 0;
        case 1001112: return 0;
        case 1002046: return 20;
        case 1002107: return 30;
        case 1002089: return 20;
        case 1002115: return 30;
        case 1002059: return 22;
        case 1002060: return 32;
        case 1002053: return 30;
        case 1002113: return 30;
        case 1002052: return 0;
        case 1002112: return 0;
        case 1003046: return 20;
        case 1003107: return 30;
        case 1003089: return 20;
        case 1003115: return 20;
        case 1003059: return 22;
        case 1003060: return 32;
        case 1003053: return 30;
        case 1003113: return 30;
        case 1003052: return 0;
        case 1003112: return 0;
        case 1004046: return 20;
        case 1004107: return 30;
        case 1004089: return 20;
        case 1004115: return 20;
        case 1004059: return 22;
        case 1004060: return 32;
        case 1004053: return 30;
        case 1004113: return 30;
        case 1004052: return 0;
        case 1004112: return 0;
        case 1006046: return 20;
        case 1006107: return 30;
        case 1006089: return 20;
        case 1006115: return 30;
        case 1006059: return 22;
        case 1006060: return 32;
        case 1006053: return 30;
        case 1006113: return 30;
        case 1006052: return 0;
        case 1006112: return 0;
        case 1050046: return 20;
        case 1050107: return 30;
        case 1050089: return 20;
        case 1050115: return 30;
        case 1050059: return 20;
        case 1050060: return 30;
        case 1050053: return 30;
        case 1050113: return 30;
        case 1050052: return 0;
        case 1050112: return 0;
        case 1051046: return 20;
        case 1051107: return 30;
        case 1051089: return 20;
        case 1051115: return 30;
        case 1051059: return 22;
        case 1051060: return 32;
        case 1051053: return 30;
        case 1051113: return 30;
        case 1051052: return 0;
        case 1051112: return 0;
        case 1052046: return 20;
        case 1052107: return 30;
        case 1052089: return 24;
        case 1052115: return 30;
        case 1052059: return 22;
        case 1052060: return 32;
        case 1052053: return 30;
        case 1052113: return 30;
        case 1052052: return 0;
        case 1052112: return 0;
        case 1100046: return 20;
        case 1100107: return 30;
        case 1100089: return 20;
        case 1100115: return 30;
        case 1100059: return 22;
        case 1100060: return 32;
        case 1100053: return 20;
        case 1100113: return 30;
        case 1100052: return 0;
        case 1100112: return 0;
        case 1101046: return 20;
        case 1101107: return 30;
        case 1101089: return 30;
        case 1101115: return 50;
        case 1101059: return 22;
        case 1101060: return 32;
        case 1101053: return 20;
        case 1101113: return 30;
        case 1101052: return 0;
        case 1101112: return 0;
        case 1102046: return 20;
        case 1102107: return 30;
        case 1102089: return 30;
        case 1102115: return 50;
        case 1102059: return 22;
        case 1102060: return 32;
        case 1102053: return 30;
        case 1102113: return 50;
        case 1102052: return 0;
        case 1102112: return 0;
        case 1103046: return 20;
        case 1103107: return 30;
        case 1103089: return 20;
        case 1103115: return 30;
        case 1103059: return 22;
        case 1103060: return 32;
        case 1103053: return 20;
        case 1103113: return 30;
        case 1103052: return 0;
        case 1103112: return 0;
        case 1105046: return 30;
        case 1105107: return 45;
        case 1105089: return 45;
        case 1105115: return 75;
        case 1105059: return 33;
        case 1105060: return 48;
        case 1105053: return 30;
        case 1105113: return 45;
        case 1105052: return 0;
        case 1105112: return 0;
        case 1106046: return 20;
        case 1106107: return 30;
        case 1106089: return 20;
        case 1106115: return 30;
        case 1106059: return 22;
        case 1106060: return 32;
        case 1106053: return 20;
        case 1106113: return 30;
        case 1106052: return 0;
        case 1106112: return 0;
        case 1107046: return 20;
        case 1107107: return 30;
        case 1107089: return 20;
        case 1107115: return 30;
        case 1107059: return 22;
        case 1107060: return 32;
        case 1107053: return 20;
        case 1107113: return 30;
        case 1107052: return 0;
        case 1107112: return 0;
        case 1150046: return 20;
        case 1150107: return 30;
        case 1150089: return 24;
        case 1150115: return 30;
        case 1150059: return 22;
        case 1150060: return 32;
        case 1150053: return 30;
        case 1150113: return 30;
        case 1150052: return 0;
        case 1150112: return 0;
        case 1151046: return 20;
        case 1151107: return 30;
        case 1151089: return 24;
        case 1151115: return 30;
        case 1151059: return 22;
        case 1151060: return 32;
        case 1151053: return 30;
        case 1151113: return 30;
        case 1151052: return 0;
        case 1151112: return 0;
        case 1600046: return 20;
        case 1600107: return 30;
        case 1600089: return 24;
        case 1600115: return 30;
        case 1600059: return 22;
        case 1600060: return 32;
        case 1600053: return 20;
        case 1600113: return 30;
        case 1600052: return 0;
        case 1600112: return 0;
        case 1601046: return 20;
        case 1601107: return 30;
        case 1601089: return 24;
        case 1601115: return 30;
        case 1601059: return 22;
        case 1601060: return 32;
        case 1601053: return 20;
        case 1601113: return 30;
        case 1601052: return 0;
        case 1601112: return 0;
        case 9010046: return 20;
        case 9010107: return 30;
        case 9010089: return 10;
        case 9010115: return 10;
        case 9010059: return 22;
        case 9010060: return 32;
        case 9010053: return 30;
        case 9010113: return 30;
        case 9010052: return 20;
        case 9010112: return 20;
        case 9011046: return 5;
        case 9011107: return 7.5;
        case 9011089: return 10;
        case 9011115: return 12.5;
        case 9011059: return 5.5;
        case 9011060: return 8;
        case 9011053: return 5;
        case 9011113: return 7.5;
        case 9011052: return 0;
        case 9011112: return 0;
        case 9015046: return 50;
        case 9015107: return 75;
        case 9015089: return 60;
        case 9015115: return 75;
        case 9015059: return 55;
        case 9015060: return 80;
        case 9015053: return 75;
        case 9015113: return 75;
        case 9015052: return 0;
        case 9015112: return 0;
        case 9016046: return 20;
        case 9016107: return 30;
        case 9016089: return 24;
        case 9016115: return 30;
        case 9016059: return 22;
        case 9016060: return 32;
        case 9016053: return 30;
        case 9016113: return 30;
        case 9016052: return 0;
        case 9016112: return 0;
        case 9019046: return 20;
        case 9019107: return 30;
        case 9019089: return 24;
        case 9019115: return 30;
        case 9019059: return 22;
        case 9019060: return 32;
        case 9019053: return 20;
        case 9019113: return 30;
        case 9019052: return 0;
        case 9019112: return 0;
        case 9020046: return 35;
        case 9020107: return 52.5;
        case 9020089: return 52.5;
        case 9020115: return 70;
        case 9020059: return 38.5;
        case 9020060: return 56;
        case 9020053: return 35;
        case 9020113: return 52.5;
        case 9020052: return 0;
        case 9020112: return 0;
        default: return 0;
    }
}

unsigned char IsWeaponShield(unsigned int weapon_id){
	//Can't make any destinction between Great/Medium/Small shields based only on upper part of weaponid
	if (weapon_id / 100000 == 14 || weapon_id / 100000 == 15 || weapon_id / 100000 == 90){
		return 1;
	}
	return 0;
}